package liu.zhi.peng;

import java.io.IOException;
import java.util.Scanner;
import java.util.TreeSet;

public class Function {
    //师生权限
    String power;
    //功能的序号
    char n;
    //装填学生信息的集合
    TreeSet<Student> studentSet = new TreeSet<>();
    public  void comeOn() throws IOException {
        studentSet = ReadFile.print();
        Scanner sc = new Scanner(System.in);
        power = system.power();
        //老师的权限
        if(power.equals("老师")){
            Image.printTeacher();
            do{
                System.out.print("请选择功能");
                //获取功能序号
                n = sc.next().charAt(0);
                //清空其他的没用输入（例如：1 2）
                sc.nextLine();
                switch(n){
                    case '1':
                        //查看信息
                        system.lookStudent(studentSet);
                        break;
                    case '2':
                        //添加信息
                        system.addStudent(studentSet);
                        break;
                    case '3':{
                        //删除
                        System.out.println("请输入要删除学生的学号：");
                        String id = sc.next();
                        if(!id.matches("[1-9]\\d{8}")) {
                            System.out.println("\033[31m删除失败，学号输入有误！\033[0m");
                            break;
                        }
                        system.deleteStudent(studentSet,id);
                    }
                    break;
                    case '4':{
                        //查找信息
                        System.out.println("请输入要查找学生的学号：");
                        String id = sc.next();
                        if(!id.matches("[1-9]\\d{8}")) {
                            System.out.println("\033[31m删除失败，学号输入有误！\033[0m");
                            break;
                        }
                        system.foundStudent(studentSet,id);
                    }
                    break;
                    case '5':{
                        //修改信息
                        System.out.println("请输入要修改学生的学号：");
                        String id = sc.next();
                        if(!id.matches("[1-9]\\d{8}")) {
                            System.out.println("\033[31m删除失败，学号输入有误！\033[0m");
                            break;
                        }
                        system.reviseStudent(studentSet,id);
                    }
                    break;
                    case '6':{
                        //求班级平均分
                        system.averageStudent(studentSet);
                    }
                    break;
                    case '7':{
                        //随机点名
                        system.namedStudent(studentSet);
                    }
                    break;
                    case '8':{
                        //求个人平均分
                        System.out.println("请输入要查找学生的学号：");
                        String id = sc.next();
                        if(!id.matches("[1-9]\\d{8}")) {
                            System.out.println("\033[31m查找失败，学号输入有误！\033[0m");
                            break;
                        }
                        system.personStudent(studentSet,id);
                    }
                    break;
                    case '9':{
                        //班级某个科目及格人数
                        System.out.println("请输入要查询及格数量的科目\033[31m(语文，数学，英语)\033[0m");
                        String subject = sc.next();
                        if(!subject.matches("语文|数学|英语")){
                            System.out.println("\033[31m科目输入有误！\033[0m");
                            break;
                        }

                        system.qualifiedStudent(studentSet,subject);
                    }
                    break;
                    case '0':{
                        //退出系统
                        System.out.println("\033[31m成功退出系统\033[0m");
                        system.writeStudentsToFile(studentSet);
                        System.exit(0);
                    }
                    break;
                    default:
                        System.out.println("\033[31m功能选择错误\033[0m");
                }
            }while(n!='0');
        }
        //学生的权限
        else if(power.equals("学生")){
            Image.printStudent();
            do{
                System.out.print("请选择功能");
                n = sc.next().charAt(0);
                sc.nextLine();
                switch(n){
                    case '1':
                        system.lookStudent(studentSet);
                        break;
                    case '2':{
                        System.out.println("请输入要查找学生的学号：");
                        String id = sc.next();
                        if(!id.matches("[1-9]\\d{8}")) {
                            System.out.println("\033[31m删除失败，学号输入有误！\033[0m");
                            break;
                        }
                        system.foundStudent(studentSet,id);
                    }
                    break;
                    case '3':{
                        system.averageStudent(studentSet);
                    }
                    break;
                    case '4':{
                        System.out.println("请输入要修改学生的学号：");
                        String id = sc.next();
                        if(!id.matches("[1-9]\\d{8}")) {
                            System.out.println("\033[31m删除失败，学号输入有误！\033[0m");
                            break;
                        }
                        system.personStudent(studentSet,id);
                    }
                    break;
                    case '5':{
                        System.out.println("请输入要查询及格数量的科目\033[31m(语文，数学，英语)\033[0m");
                        String subject = sc.next();
                        if(!subject.matches("语文|数学|英语")){
                            System.out.println("\033[31m科目输入有误！\033[0m");
                            break;
                        }
                        system.qualifiedStudent(studentSet,subject);
                    }
                    break;
                    case '0':{
                        System.out.println("\033[31m成功退出系统\033[0m");
                        system.writeStudentsToFile(studentSet);
                        System.exit(0);
                    }
                    break;
                    default:
                        System.out.println("\033[31m功能选择错误\033[0m");
                }
            }while(n!='0');
        }
    }
}
